package com.reverse.engineering.util.core.run.bean;

import com.ApplicationProperties;
import com.reverse.engineering.util.core.run.bean.database.DatabasePropertiesInterface;
import com.reverse.engineering.util.core.run.enums.DatabaseType;

/**
 * 数据库属性类
 * 
 * @author liu
 * @date 2020-08-22
 */
public class DatabaseProperties {

    /** 数据库类型 */
    public static final DatabaseType DATABASE_TYPE = getDatabaseType();
    /** 数据库属性 */
    public static final DatabasePropertiesInterface databaseProperties = DATABASE_TYPE.getDatabaseProperties();

    /**
     * 获取数据库引擎
     * 
     * @return
     */
    public static String getDatabaseCollate() {
        return databaseProperties.getDatabaseCollate();
    }

    /**
     * 获取数据库字符集
     * 
     * @return
     */
    public static String getDatabaseCharacter() {
        return databaseProperties.getDatabaseCharacter();
    }

    /**
     * 获取主键字段名
     * 
     * @return
     */
    public static String getPrimarykey() {
        return databaseProperties.getPrimarykey();
    }

    /**
     * 获取主键自动增长名
     * 
     * @return
     */
    public static String getAutoIncrement() {
        return databaseProperties.getAutoIncrement();
    }

    /**
     * 获取主键自动增长语句
     * 
     * @return
     */
    public static String getAutoIncrementSql() {
        return databaseProperties.getAutoIncrementSql();
    }

    /**
     * 获取实例
     * 
     * @return
     */
    private static DatabaseType getDatabaseType() {
        for (DatabaseType databaseType : DatabaseType.values()) {
            if (ApplicationProperties.databaseEnvironment == databaseType) {
                return databaseType;
            }
        }
        return null;
    }

}